val a1 = List(1, 2, 3, 4)
val a2 = List(1, 2, 3, 4, "s")

// 这里会将元素插入到List的头部
val b = 0 :: a1

// 使用::连接符，后面最后一个必须为Nil，倒序将z插入到Nil的头部，将y插入到z前面，将x插入到y前面
val c = "x" :: "y" :: "z" :: Nil
// 如 ：
val c0 = "z" :: Nil
val c1 = "y" :: c0
val c2 = "x" :: c1

// 两个集合通过:::连接符连接,集合类型变成Any，因为a1是Int类型，c是String类型,他们的父类型是Any
val d = a1 ::: c ;

// 取出List中的第一个数据head以及取出非第一个数据tail
a1.head
d.head
c.head

a1.tail
d.tail
c.tail

// 判断元素是否为空
a1.isEmpty
Nil.isEmpty

// 递归函数遍历List
def walkthru(l: List[Int]) : String = {
  if(l.isEmpty) ""
  else
    l.head.toString + " " + walkthru(l.tail) ;
}

walkthru(a1)

// ----------------- list高级用法  ----------------
// filter过滤
// 取奇数
a1.filter(x => x%2 == 1)
// 高阶函数  取数字
val str = "99 Red Balloowns".toList
str.filter(x => Character.isDigit(x))
// 取循环当不为B条件时  一直取数据
str.takeWhile(x => x != 'B')
